<!--
 * @FilePath     : /study_code/layui/12-7-1.html
 * @Description  : form.on() submit 表单提交
 * @Date         : 2025-04-07 16:07:21
 * @Author       : Fang YingGui
 * @LastEditors  : fangyinggui 18715384437@163.com
 * @LastEditTime : 2025-04-07 16:59:34
-->
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>documentName</title>
    <link rel="stylesheet" href="/layui/dist/css/layui.css" />
  </head>
  <body>
    <form class="layui-form">
      <div class="layui-form-item">
        <label class="layui-form-label">非空</label>
        <div class="layui-input-block">
          <input
            type="text"
            name="patentName"
            placeholder="请输入"
            autocomplete="off"
            class="layui-input"
            lay-verify="required"
            lay-verType="msg"
            lay-reqText="当前项必须填写"
          />
        </div>
      </div>

      <div class="layui-form-item">
        <label class="layui-form-label">复选框</label>
        <div class="layui-input-block">
          <input type="checkbox" name="like[write]" title="写作" checked />
          <input type="checkbox" name="like[read]" title="阅读" />
        </div>
      </div>

      <div class="layui-form-item">
        <div class="layui-input-block">
          <button class="layui-btn" lay-submit lay-filter="subone">立即提交</button>
          <button type="reset" class="layui-btn layui-btn-primary">重置</button>
        </div>
      </div>

      <div class="layui-form-item">
        <h2 lay-submit lay-filter="subtwo">点我提交</h2>
      </div>
    </form>

    <script src="/layui/dist/layui.js"></script>
    <script>
      layui.use(['form'], function () {
        var form = layui.form,
          $ = layui.$

        /**
         * @brief: 触发表单提交事件；
         * @param {Sting} submit(filter),
         * #submit 事件
         * ! 注意监听的是 具有 lay-filter 属性的可点击元素
         * #filter 触发事件的表单过滤；
         * @param {Function} callback(data), 事件触发时调用的回调；
         * #data, 事件触发时获取当前表单元素及数据；
         * data.elem, 被执行事件的元素DOM对象
         * data.form, 被执行提交的form对象，一般在存在form标签时才会返回
         * $data.field, 提交的表单键值对对象，格式为 { name0: value0, name1: value1 }
         * !return false, 在表单事件监听中可阻止表单跳转
         */
        // form.on('submit(filter)', callback(data));

        form.on('submit(subone)', function (data) {
          console.log('one')
          // console.log(data.elem)
          // console.log(data.form)
          console.log(data.field)
          return false // ！阻止表单跳转。如果需要表单跳转，去掉这段即可。
        })

        form.on('submit(subtwo)', function (data) {
          console.log('two')
          console.log(data.elem) //被执行事件的元素DOM对象，一般为button对象
          console.log(data.form) //被执行提交的form对象，一般在存在form标签时才会返回
          console.log(data.field) //当前容器的全部表单字段，名值对形式：{name: value}
          return false //阻止表单跳转。如果需要表单跳转，去掉这段即可。
        })
      })
    </script>
  </body>
</html>
